Get ACS data

Suppose you wish to tabulate ACS one-year 2019 data for estimates of total people by race and ethnicity, as provided in table B03002 by PSRC counties. You would use the following function call:

tbl<-psrccensus::get_acs_recs(geography = 'county',
             table.names = 'B03002',
             years = 2019,
             acs.type = 'acs1')
tbl
## Time Series:
## Start = 1 
## End = 105 
## Frequency = 1 
##     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
##   1    0    0    0    0    0    0    0    0    0     0     0
##   2    0    0    0    0    0    0    0    0    0     0     0
##   3    0    0    0    0    0    0    0    0    0     0     0
##   4    0    0    0    0    0    0    0    0    0     0     0
##   5    0    0    0    0    0    0    0    0    0     0     0
##   6    0    0    0    0    0    0    0    0    0     0     0
##   7    0    0    0    0    0    0    0    0    0     0     0
##   8    0    0    0    0    0    0    0    0    0     0     0
##   9    0    0    0    0    0    0    0    0    0     0     0
##  10    0    0    0    0    0    0    0    0    0     0     0
##  11    0    0    0    0    0    0    0    0    0     0     0
##  12    0    0    0    0    0    0    0    0    0     0     0
##  13    0    0    0    0    0    0    0    0    0     0     0
##  14    0    0    0    0    0    0    0    0    0     0     0
##  15    0    0    0    0    0    0    0    0    0     0     0
##  16    0    0    0    0    0    0    0    0    0     0     0
##  17    0    0    0    0    0    0    0    0    0     0     0
##  18    0    0    0    0    0    0    0    0    0     0     0
##  19    0    0    0    0    0    0    0    0    0     0     0
##  20    0    0    0    0    0    0    0    0    0     0     0
##  21    0    0    0    0    0    0    0    0    0     0     0
##  22    0    0    0    0    0    0    0    0    0     0     0
##  23    0    0    0    0    0    0    0    0    0     0     0
##  24    0    0    0    0    0    0    0    0    0     0     0
##  25    0    0    0    0    0    0    0    0    0     0     0
##  26    0    0    0    0    0    0    0    0    0     0     0
##  27    0    0    0    0    0    0    0    0    0     0     0
##  28    0    0    0    0    0    0    0    0    0     0     0
##  29    0    0    0    0    0    0    0    0    0     0     0
##  30    0    0    0    0    0    0    0    0    0     0     0
##  31    0    0    0    0    0    0    0    0    0     0     0
##  32    0    0    0    0    0    0    0    0    0     0     0
##  33    0    0    0    0    0    0    0    0    0     0     0
##  34    0    0    0    0    0    0    0    0    0     0     0
##  35    0    0    0    0    0    0    0    0    0     0     0
##  36    0    0    0    0    0    0    0    0    0     0     0
##  37    0    0    0    0    0    0    0    0    0     0     0
##  38    0    0    0    0    0    0    0    0    0     0     0
##  39    0    0    0    0    0    0    0    0    0     0     0
##  40    0    0    0    0    0    0    0    0    0     0     0
##  41    0    0    0    0    0    0    0    0    0     0     0
##  42    0    0    0    0    0    0    0    0    0     0     0
##  43    0    0    0    0    0    0    0    0    0     0     0
##  44    0    0    0    0    0    0    0    0    0     0     0
##  45    0    0    0    0    0    0    0    0    0     0     0
##  46    0    0    0    0    0    0    0    0    0     0     0
##  47    0    0    0    0    0    0    0    0    0     0     0
##  48    0    0    0    0    0    0    0    0    0     0     0
##  49    0    0    0    0    0    0    0    0    0     0     0
##  50    0    0    0    0    0    0    0    0    0     0     0
##  51    0    0    0    0    0    0    0    0    0     0     0
##  52    0    0    0    0    0    0    0    0    0     0     0
##  53    0    0    0    0    0    0    0    0    0     0     0
##  54    0    0    0    0    0    0    0    0    0     0     0
##  55    0    0    0    0    0    0    0    0    0     0     0
##  56    0    0    0    0    0    0    0    0    0     0     0
##  57    0    0    0    0    0    0    0    0    0     0     0
##  58    0    0    0    0    0    0    0    0    0     0     0
##  59    0    0    0    0    0    0    0    0    0     0     0
##  60    0    0    0    0    0    0    0    0    0     0     0
##  61    0    0    0    0    0    0    0    0    0     0     0
##  62    0    0    0    0    0    0    0    0    0     0     0
##  63    0    0    0    0    0    0    0    0    0     0     0
##  64    0    0    0    0    0    0    0    0    0     0     0
##  65    0    0    0    0    0    0    0    0    0     0     0
##  66    0    0    0    0    0    0    0    0    0     0     0
##  67    0    0    0    0    0    0    0    0    0     0     0
##  68    0    0    0    0    0    0    0    0    0     0     0
##  69    0    0    0    0    0    0    0    0    0     0     0
##  70    0    0    0    0    0    0    0    0    0     0     0
##  71    0    0    0    0    0    0    0    0    0     0     0
##  72    0    0    0    0    0    0    0    0    0     0     0
##  73    0    0    0    0    0    0    0    0    0     0     0
##  74    0    0    0    0    0    0    0    0    0     0     0
##  75    0    0    0    0    0    0    0    0    0     0     0
##  76    0    0    0    0    0    0    0    0    0     0     0
##  77    0    0    0    0    0    0    0    0    0     0     0
##  78    0    0    0    0    0    0    0    0    0     0     0
##  79    0    0    0    0    0    0    0    0    0     0     0
##  80    0    0    0    0    0    0    0    0    0     0     0
##  81    0    0    0    0    0    0    0    0    0     0     0
##  82    0    0    0    0    0    0    0    0    0     0     0
##  83    0    0    0    0    0    0    0    0    0     0     0
##  84    0    0    0    0    0    0    0    0    0     0     0
##  85    0    0    0    0    0    0    0    0    0     0     0
##  86    0    0    0    0    0    0    0    0    0     0     0
##  87    0    0    0    0    0    0    0    0    0     0     0
##  88    0    0    0    0    0    0    0    0    0     0     0
##  89    0    0    0    0    0    0    0    0    0     0     0
##  90    0    0    0    0    0    0    0    0    0     0     0
##  91    0    0    0    0    0    0    0    0    0     0     0
##  92    0    0    0    0    0    0    0    0    0     0     0
##  93    0    0    0    0    0    0    0    0    0     0     0
##  94    0    0    0    0    0    0    0    0    0     0     0
##  95    0    0    0    0    0    0    0    0    0     0     0
##  96    0    0    0    0    0    0    0    0    0     0     0
##  97    0    0    0    0    0    0    0    0    0     0     0
##  98    0    0    0    0    0    0    0    0    0     0     0
##  99    0    0    0    0    0    0    0    0    0     0     0
## 100    0    0    0    0    0    0    0    0    0     0     0
## 101    0    0    0    0    0    0    0    0    0     0     0
## 102    0    0    0    0    0    0    0    0    0     0     0
## 103    0    0    0    0    0    0    0    0    0     0     0
## 104    0    0    0    0    0    0    0    0    0     0     0
## 105    0    0    0    0    0    0    0    0    0     0     0

Default and custom arguments

By default, without specifying any counties, the jurisdictions returned will be King, Kitsap, Pierce, and Snohomish Counties. Use ?get_acs_recs() for other default values implemented in this function.

To retrieve non-PSRC counties or a subset of the default counties, use the counties argument and provide a vector of counties (e.g. counties = c("King", "Thurston")). Do not use the fips argument as that is reserved for MSA or place geographies.

Get Census data

The get_decennial_recs() to generate Decennial Census tables operates similarly to the get_acs_recs(). If you wanted to retrieve housing units and total population by MSA, you would call the following:

get_decennial_recs(geography = 'msa',
                   table_codes = c("H001", "P001"),
                   years = c(2010),
                   fips = c('42660', "28420"))
## # A tibble: 4 x 6
##   GEOID NAME                                    variable   value label concept  
##   <chr> <chr>                                   <chr>      <dbl> <chr> <chr>    
## 1 28420 Kennewick-Pasco-Richland, WA Metro Area H001001    93041 Total HOUSING ~
## 2 42660 Seattle-Tacoma-Bellevue, WA Metro Area  H001001  1463295 Total HOUSING ~
## 3 28420 Kennewick-Pasco-Richland, WA Metro Area P001001   253340 Total TOTAL PO~
## 4 42660 Seattle-Tacoma-Bellevue, WA Metro Area  P001001  3439809 Total TOTAL PO~

Note: the table names are padded with 0s, so you call “H001” as opposed to “H1” as you would in Elmer. Only SF1 tables are currently implemented.

Make a map of ACS data by tract

Let’s say you want to create a map of the tracts in the region for one variable. You can use the function create_tract_map(). Here’s an example, mapping non-Hispanic Black or African American population alone by tract:

## Warning: package 'sf' was built under R version 4.0.5
## Warning: package 'dplyr' was built under R version 4.0.5
tract.big.tbl <- get_acs_recs(geography ='tract', 
                              table.names = 'B03002',
                              years = 2019)

tract.tbl <- tract.big.tbl %>% 
  filter(label=='Estimate!!Total:!!Not Hispanic or Latino:!!Black or African American alone')

tract.url <- "https://services6.arcgis.com/GWxg6t7KXELn1thE/arcgis/rest/services/tract2010_nowater/FeatureServer/0/query?where=0=0&outFields=*&f=pgeojson"
#'
tract.lyr<-st_read(tract.url)
## Reading layer `OGRGeoJSON' from data source 
##   `https://services6.arcgis.com/GWxg6t7KXELn1thE/arcgis/rest/services/tract2010_nowater/FeatureServer/0/query?where=0=0&outFields=*&f=pgeojson' 
##   using driver `GeoJSON'
## Simple feature collection with 773 features and 21 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -123.0234 ymin: 46.72799 xmax: -120.9062 ymax: 48.29924
## Geodetic CRS:  WGS 84
create_tract_map(tract.tbl, 
                 tract.lyr, 
                 map.title='Black, non-Hispanic Population',
                 map.title.position='topleft', 
                 legend.title='Black, Non-Hispanic Population',
                 legend.subtitle='by Census Tract')